
import { MessageBox,Message  } from 'element-ui'
import * as util from '@/libs/util.js'
import router from '@/router'
import api from '@/api'

export default {
  namespaced: true,
  actions: {
    /**
     * @description 登录
     * @param {Object} context
     * @param {Object} payload username {String} 用户账号
     * @param {Object} payload password {String} 密码
     * @param {Object} payload route {Object} 登录成功后定向的路由对象 任何 vue-router 支持的格式
     */
    async login ({ dispatch }, data) {
      const res = await api.API_SYSSTAFF_WEBLOGIN_POST(
        Object.assign(data, {
          config: {
            showMsg: false
          }
        })
      )
      //存储登录信息
    if(res.Code==200 || res.Code=="200"){
      localStorage.setItem('changanInfo', JSON.stringify(res.Entity))
    }
	  //判断是否为首次登录
		if(res.Entity.FirstLogin){
			Message({
			  message:'首次登录,请在APP端登录进行实名认证',
			  type: 'warning',
			  duration: 3 * 1000
			})
			// return false;
		}
		//缓存密码时效性数值
      localStorage.setItem('token', res.Entity.Token)
      await dispatch(
        'myadmin/user/set',
        { userInfo: res.Entity },
        { root: true }
      )
    },
    /**
     * @description 注销用户并返回登录页面
     * @param {Object} context
     * @param {Object} payload confirm {Boolean} 是否需要确认
     */
    logout1 ({ commit, dispatch }, { confirm = false } = {}) {
      /**
       * @description 注销
       */
      async function logout () {
        // api.SYS_OAUTH_EXITLOGIN().finally(async () => {
        // localStorage.removeItem('token')
        // 清空 vuex 用户信息
        await dispatch('myadmin/user/set', {}, { root: true })
        // 清空权限信息
        await dispatch('myadmin/permission/clear', null, { root: true })

        // 跳转路由
        // router.push({ name: 'login' })
        // fix:修改为刷新页面，解决动态路由可能导致的问题
        location.replace('/login')
        // })
      }
      // 判断是否需要确认
      if (confirm) {
        commit('myadmin/gray/set', true, { root: true })
        MessageBox({
          title: '退出登陆',
          dangerouslyUseHTMLString: true,
          message: '<strong style="font-size:1rem">确定退出系统吗？</strong>',
          showCancelButton: true,
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          beforeClose: (action, instance, done) => {
            if (action === 'confirm') {
              instance.confirmButtonLoading = true
              done()

              setTimeout(() => {
                instance.confirmButtonLoading = false
              }, 5000)
            } else {
              done()
            }
          }
        })
          .then(() => {
            logout()
          })
          .finally(() => {
            commit('myadmin/gray/set', false, { root: true })
          })
      } else {
        logout()
      }
    }
  }
}
